package top.ytazwc.normal;

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import top.ytazwc.store.card.IQiYiCardService;
import top.ytazwc.store.coupon.CouponResult;
import top.ytazwc.store.coupon.CouponService;
import top.ytazwc.store.goods.DeliverReq;
import top.ytazwc.store.goods.GoodsService;

/**
 * @author 花木凋零成兰
 * @title PrizeController
 * @date 2024/4/28 0:11
 * @package top.ytazwc.normal
 * @description 模拟发奖服务类
 */
@Slf4j
public class PrizeController {

    // 发送奖品给用户
    public AwardResult awardToUser(AwardRequest request) {
        // 将发放奖品请求 转化为JSON字符串
        String requestJson = JSON.toJSONString(request);
        // 发放奖品结果
        AwardResult result = null;
        try {
            log.info("奖品开始发放,发放用户:{}, 用户详细信息:{}", request.getUId(), requestJson);
            // 按照不同类型 发放商品[1 优惠券、2 实物商品、3 第三方兑换卡(爱奇艺)]
            if (request.getAwardType() == 1) {
                // 获取发放优惠卷服务对象
                CouponService couponService = new CouponService();
                // 发放优惠卷 并记录发放结果
                CouponResult couponResult = couponService.sendCoupon(request.getUId(), request.getAwardNumber(), request.getBizId());
                if ("0000".equals(couponResult.getCode())) {
                    // 发放奖品成功
                    result = new AwardResult("0000", "发放成功!");
                } else {
                    // 发放奖品失败
                    result = new AwardResult("0001", couponResult.getInfo());
                }
            } else if (request.getAwardType() == 2) {
                // 获取发放实物商品服务对象
                GoodsService goodsService = new GoodsService();
                // 填写收货用户信息
                DeliverReq deliverReq = DeliverReq.builder()
                        // 获取 根据用户id 用户姓名
                        .userName(queryUserName(request.getUId()))
                        // 根据用户id 获取用户电话号码
                        .userPhone(queryUserPhoneNumber(request.getUId()))
                        // 商品的 sku
                        .sku(request.getAwardNumber())
                        // 订单Id 即业务Id 防止重复
                        .orderId(request.getBizId())
                        // 获取收货人姓名
                        .consigneeUserName(request.getExtMap().get("consigneeUserName"))
                        // 获取收货人手机
                        .consigneeUserPhone(request.getExtMap().get("consigneeUserPhone"))
                        // 获取收货人地址
                        .consigneeUserAddress(request.getExtMap().get("consigneeUserAddress"))
                        .build();
                // 发放实物商品
                Boolean isSuccess = goodsService.deliverGoods(deliverReq);
                if (isSuccess) {
                    // 发放成功
                    result = new AwardResult("0000", "发放成功!");
                } else {
                    // 发放失败
                    result = new AwardResult("0001", "发放失败!");
                }
            } else if (request.getAwardType() == 3) {
                // 发放爱奇艺会员卡
                // 获取会员卡 绑定的账号
                String bindMobileNumber = queryUserPhoneNumber(request.getUId());
                // 获取发放会员卡服务对象
                IQiYiCardService iQiYiCardService = new IQiYiCardService();
                // 发放会员卡
                iQiYiCardService.grantToken(bindMobileNumber, request.getAwardNumber());
                result = new AwardResult("0000", "发放成功");
            }
            log.info("奖品发放完成; 用户id: {}", request.getUId());
        } catch (Exception e) {
            log.error("奖品发放失败;用户id:{}, 用户详细信息:{}", request.getUId(), request, e);
            result = new AwardResult("0001", e.getMessage());
        }
        return result;
    }
    // 根据用户id获取用户姓名
    private String queryUserName(String uId) {
        return "花花";
    }
    // 根据用户id获取用户手机号码
    private String queryUserPhoneNumber(String uId) {
        return "15200101232";
    }
}
